package org.yawnage.interfaces.framework 
{
	import org.yawnage.framework.server.Publisher;
	import org.yawnage.interfaces.base.IMapperObject;
	
	 /**
	 * <p>//TODO:To be written</p>
	 * @author Berry Jordaan
	 * @date 2011/09/06 09:40 AM
	 * @copyright Copyright © Berry/James 2011
	 * @version 1.0.0.0
	 * @description
	 * @history Berry Jordaan on 2011/09/06 09:40 AM: Created
	 */
	
	public interface IPublisher extends IMapperObject
	{
		/**
		 * 
		 */
		function get internalID():Number;

		/**
		 * 
		 * @param	subscriberP
		 * @param	callBackP
		 * @param	publisherNameP
		 * @param	serviceNameP
		 * @param	priority
		 */
		function subscribe(subscriberP:ISubscriber, callBackP:Function, publisherNameP:String, serviceNameP:String, priority:int = 0) : void;
		
		/**
		 * 
		 * @param	publisherP
		 * @param	serviceNameP
		 * @param	transportLayerP Any object that needs to be wrapped in a transport layer
		 */
		function syndicate(publisherP:Publisher, serviceName:String, transportLayer:* = null):void;
		
		/**
		 * 
		 */
		function defineServices():void;
	}
	
}